SSE-KMS暗号化したCloudTrailログをSumo Logicに送信する
今回はAWSとSumo Logicとのログ連携の中で、SSE-KMS暗号化したCloudTrailログをSumo Logicに送信したいと思います。
構成としては以下のようになります。
Sumo LogicのCloudTrailソースの設定だけでは権限エラーになる
通常 S3 に保存したログを Sumo Logic に連携したい場合、下記のような手順で AWS に Sumo Logic からアクセスするためのロールを作成して、Sumo Logic からログをポーリングします。
※CloudTrail の場合、実際には AWS CloudTrail Source を設定する必要がありますが、下記の記事内での Source の選択を変えていただくだけでその他はほぼ同様の手順です。
ただし、SSE-KMSで CloudTrail のログを暗号化している場合、Collectionの設定でソースがエラーとなってしまい、ログを収集することができません。
エラーメッセージを確認するには、上記の画面の「Error」の部分をクリックして、詳細を確認していくことができます。
Health Events の画面でエラーの詳細を確認することができ、KMSキーのポリシーが原因かはメッセージだけではわかりませんがアクセス権限エラーとなっていることが分かります。
KMSキーポリシーでSumo Logicがアクセスするためのロールを許可する
KMSキーで CloudTrail 証跡を暗号化している場合、KMSキーポリシーにSumo Logicがアクセスするためのロールを許可してあげます。
公式ドキュメントでも、 こちらに記載されているので、参照して必要な設定を入れていきます。
AWSのKMSにログインして、CMSキーのキーポリシーを編集して以下のポリシーを追加します。
{ "Sid": "Enable Sumo Logic S3 kms decrypt", "Effect": "Allow", "Principal": { "AWS": "<Sumo Logic がアクセスするためのロールのARN>" }, "Action": "kms:decrypt", "Resource": "*" }
「<Sumo Logic がアクセスするためのロールのARN>」は、前のCloudTrailソースの設定で作成されたロールを指定して上げる必要があります。
IAMから確認することも可能ですが、Sumo Logic コンソール内のCloudTrailソースの編集画面でARNを確認するのが簡単です。
Control Towerやマルチアカウント構成でSumo LogicがアクセスするためのロールとKMSがクロスアカウントのとき
下記のような構成の場合、KMSキーポリシーの設定に加え、S3アクセス用のロールでKMSキーのアクセス許可が必要です。(下記はControl Towerでのイメージです)
AWSのIAMにログインして、先程確認したS3アクセス用のロールに対して、KMSキーのアクセス許可を追加します。
{ "Sid": "AllowUseOfKey", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "<マスターアカウントのKMSキーのARN>" }
下記参考:ステップ 2: 外部アカウントに IAM ポリシーを追加する
ログ収集の確認
ここまで設定してしばらくした後、再度Sumo LogicのCollectionを確認すると、ソースのヘルスチェックが緑色のHelthyになっていることが確認できます。
またその隣のボタンをクリックすると、ログ検索クエリが開き、CloudTrailのログが収集できていることも確認できました。
まとめ
SSE-KMSキーでCloudTrailの証跡を暗号化している場合、追加の設定が必要になります。
もし今回のようなエラーが出ていたら確認してみてください。